package com.chenp.demo.leetcode.editor.cn;

//给定一个 m x n 的矩阵，如果一个元素为 0 ，则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 
//
// 
// 
//
// 
//
// 示例 1： 
// 
// 
//输入：matrix = [[1,1,1],[1,0,1],[1,1,1]]
//输出：[[1,0,1],[0,0,0],[1,0,1]]
// 
//
// 示例 2： 
//
// 
//输入：matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
//输出：[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
// 
//
// 
//
// 提示： 
//
// 
// m == matrix.length 
// n == matrix[0].length 
// 1 <= m, n <= 200 
// -2³¹ <= matrix[i][j] <= 2³¹ - 1 
// 
//
// 
//
// 进阶： 
//
// 
// 一个直观的解决方案是使用 O(mn) 的额外空间，但这并不是一个好的解决方案。 
// 一个简单的改进方案是使用 O(m + n) 的额外空间，但这仍然不是最好的解决方案。 
// 你能想出一个仅使用常量空间的解决方案吗？ 
// 
//
// Related Topics 数组 哈希表 矩阵 👍 822 👎 0

class SetMatrixZeroes{
    public static void main(String[] args) {
    	
        Solution solution = new SetMatrixZeroes().new Solution();
        
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public void setZeroes(int[][] matrix) {
        /*
        *标记数组
        * 遍历元素组
        *   将值赋值给标记数组
        *   如果原数组元素为
        *   标记数组对应的行和列设置为0
        * 最后更新原数组
        * */
        for (int i = 0; i < matrix.length; i++) {
            int arr[][];
            for (int j = 0; j < matrix[0].length; j++) {
                if(matrix[i][j]==0){
                    for (int k = 0; k < matrix[0].length; k++) {
                        matrix[i][k]=0;

                    }
                    for (int k = 0; k < matrix.length; k++) {
                        matrix[k][j]=0;

                    }
                }

            }

        }

    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
